package net.sf.rose.jdbc;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 功能：普通的主键生成器，此方法简单，生成的主键长度为18位，格式为{yyyyMMddHHmmss}+[9999],就是时间加四位有序数字。
 * @author fengjian
 * @since 2013-4-17
 */
public class KeyGenerator {

	/** 日期格式化类 */
	private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");

	/** 记数器值缓存 */
	private static int count = 1000;

	/**
	 * 生成主键
	 * 主键长度为18位
	 * @param beanName - 主键首位标识:取类名的前四位作为前缀，如果类名称不满四位长则取全部
	 * @return - 主键
	 */
	public static String getUID() {
		// 从缓存中取出此前缀相关的记数，如果没有或大于9999，则置1000
		count =  count > 9999 ? 1000 : ++count;
		return dateFormat.format(new Date()) + count;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		System.out.println(getUID());
	}
}
